iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 10
1

方法(Method)

定義方法
在 Ruby 定義方法,使用的是 def 這個關鍵字:

  def say
      puts "Hello, Ruby"
  end

建立帶有參數的方法

def add(a, b)
    puts a + b
end

建立帶有參數預設值的方法
方法內可以定義參數預設值,預設值不一定要放在最前面或最後面,但是必須是組在一起的:

def add_values(a = 2, b)
    a + b
end
p add_values(4)                        # 6

def add_values(a, b = 4)
    a + b
end
p add_values(1)                       # 5

為物件直接新增方法

greeting = "Hello "
def greeting.sayhi(name)
  puts self + name
end
greeting.sayhi("Ruby")            # Hello Ruby

在 Ruby 中函式(function)就是方法(method),命名的開頭一般是小寫(也可以是 _ 或數字);結尾可以是?(問號,question)或!(驚嘆號,bang,exclamation)或=(等號,equal)。

一般來說(慣例):

結尾如果是!,執行方式和一般方法沒有差別,但通常用!結尾,這個方法會改變原本的變數值,同時也表示它會有一個相對應不會改變原本變數值的方法。

list = [1, 2, 3, 4, 5]
reversed_list = original_list.reverse

p reversed_list   # => [5, 4, 3, 2, 1]
p list            # => [1, 2, 3, 4, 5]

#加入驚嘆號的方法

list = [1, 2, 3, 4, 5]
reversed_list = original_list.reverse!

p reversed_list   # => [5, 4, 3, 2, 1]
p list            # => [5, 4, 3, 2, 1]

結尾如果是?,這個方法經常會回傳表示 true 或 false 的物件。

puts "".empty?                       # => true
puts [1, 2, 3, 4, 5].include?(10)     # => false
puts "Ruby".start_with?("Ru")        # => true

結尾如果是=,表示這個方法是指派方法(assignment method),在 assignment method 中,函式中的回傳值會被忽略,而是自動回傳參數的值。

依照上面的講解 自己做做看 測量BMI的方法

# BMI值計算公式: BMI = 體重(單位:公斤)/ 身高平方(單位:公尺)

  def bmi_calculator(height, weight)
    return (weight / height ** 2).ceil(2) #ceil(2)的意思是取到小數點第二位
  end

  puts bmi_calculator(1.85, 70)   # => 20.45

上一篇
DAY9 符號(Symbol)
下一篇
DAY11 程式碼區塊(Block)
系列文
毫無基礎學習 Ruby on Rails 的 甘苦心得30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言